package com.itheima.controller;

import com.itheima.pojo.Result;
import com.itheima.utils.AliOSSUtils;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.IOException;
import java.util.UUID;

@RestController
@Slf4j
@Api(tags = "文件上传相关接口")
public class UploadController {
    //注入工具类
    @Autowired
    private AliOSSUtils aliOSSUtils;

/*
    //对获取到文件进行本地存储
    //定义请求路径
    @PostMapping("/upload")
    //定义文件上传的功能接口

    public Result upload(String username, Integer age, MultipartFile image) throws IOException {
        //记录日志信息
        log.info("文件上传：{},{},{}",username,age,image);

        //获取原始文件名
        String originalFilename = image.getOriginalFilename();

        //构造唯一文件 使用uuid（唯一识别码）来避免文件重名
        //先截取文件名后缀  .jpg    .的位置
        int index = originalFilename.lastIndexOf(".");
        //截取.后面的文件名后缀  .jpg
        String extname = originalFilename.substring(index);

        //将文件名与uuid拼接起来   uuid.jpg
        String newFilename = UUID.randomUUID().toString()+extname;

        //记录新日志
        log.info("新文件名：{}",newFilename);

        //将文件存储到服务器本地磁盘中  D:\ProgramCode\HeiMaImage
        image.transferTo(new File("D:\\ProgramCode\\HeiMaImage\\"+newFilename));

        //返回统一响应结果
        return Result.success();
    }
 */

    //文件上传阿里云OSS
    //指定请求路径和方式
    @PostMapping("/upload")
    @ApiOperation("文件上传")

    public Result upload(MultipartFile image) throws IOException {
        //记录操作日志
        log.info("文件上传,文件名：{}",image.getOriginalFilename());

        //调用阿里云工具类进行文件上传
        String url = aliOSSUtils.upload(image);

        //输入文件上传成功日志
        log.info("文件上传成功，文件访问路径：{}",url);

        //返回统一响应结果
        return Result.success(url);
    }

}
